Anaconda multiprocessing(spyder)

Selamlar.

from multiprocessing import Process

def f1():
    print('1')

def f2():
    print('2')

def f3():
    print('3')

if __name__ == '__main__':
    p1 = Process(target=f1)
    p2 = Process(target=f2)
    p3 = Process(target=f3)

    p1.start()
    p2.start()
    p3.start()

    p1.join()
    p2.join()
    p3.join()

Kodu Pycharm üzerinden çalıştırabiliyorum fakat spyder üzerinden çalıştıramıyorum.Multiprocessing i import ediyorum fakat metodlarını kullanamıyorum

Merhaba, hoş geldiniz.
Öncelikle okuyup okumadığınızı bilmiyorum ama Forumda Soru Sorarken Dikkat Edilmesi Gereken Hususlar Hakkında başlığının 2. maddesinde şöyle bir ifade var.

  1. Sorduğumuz soruların mümkün olduğunca kısa, anlaşılır bir şekilde sorulmasına dikkat edersek, hem daha hızlı cevap alabiliriz hem de karşımızdaki insanın zamanını fazla almamış oluruz. Eğer sorduğumuz soru bir kod ile alakalıysa, bu kodlar kod görünümünde paylaşılırsa, bize yardım etmek isteyen kişi veya kişiler, kodlarda bir hata olup olmadığını daha hızlı bir şekilde bulabilirler; aynı zamanda bu kodlar test edilmek için hızlıca kopyalanabilir. Eğer böyle yapmayıp, kodlarımızı bir ekran görüntüsü ile paylaşırsak, karşımızdaki insan bu kodları test etmek için onları baştan yazmak zorunda kalacaktır.

Kodlarınıza kod görünümü nasıl kazandırılır öğrenmek için lütfen aşağıdaki bağlantıyı ziyaret ediniz.

Bu arada sorunuza dönecek olursak, acaba sorun if __name__ == "__main__" ifadesini kullanıyor olduğunuzdan mı kaynaklanıyor diye düşünüyorum. Bu ifadeyi kaldırıp denediğinizde de aynı sonucu mu alıyorsunuz?

import multiprocessing

def f1():
    print('1')

def f2():
    print('2')

def f3():
    print('3')

p1 = multiprocessing.Process(target=f1)
p2 = multiprocessing.Process(target=f2)
p3 = multiprocessing.Process(target=f3)

p1.start()
p2.start()
p3.start()

p1.join()
p2.join()
p3.join()

AttributeError: module ‘multiprocessing’ has no attribute ‘Process’

Böyle bi hata alıyorum. Fakat bu kütüphaneyi Pycharmda kullandığım zaman ‘Process’ i kullanabiliyorum

You are trying to import multiprocessing from your local directory and not from the python library. The python interpreter first tries to import the module from the present directory. As you have got a file with the name multiprocessing.pyc in your directory, the interpreter is trying to import that. Hence you have got the error. Thus deleting multiprocessing.pyc will help resolve your problem.

Böyle bi yol önermişler deneyip dönüş yapacağım.

Olmadı :’)

import multiprocessing

def f1():
    print('1')

def f2():
    print('2')

def f3():
    print('3')

if __name__ == '__main__':
    p1 = multiprocessing.Process(target=f1)
    p2 = multiprocessing.Process(target=f2)
    p3 = multiprocessing.Process(target=f3)
    
    p1.start()
    p2.start()
    p3.start()
    
    p1.join()
    p2.join()
    p3.join()

Error gitti fakat şimdi bir şey dönmüyor

In [1]: runfile('E:/kod/multiprocessing.py', wdir='E:/kod')

In [2]:

multiprocessing.py isminde bir dosyanız var anladığım kadarıyla. onun ismini değiştirirseniz sorun çözülür diye tahmin ediyorum.

Bi üstteki cevapta bundan bahsettim

Acaba bu sefer de sorun / işaretinden mi kaynaklanıyor diye düşünüyorum.
Aşağıdaki gibi değiştirince düzeliyor mu?

In [1]: runfile(r'E:\kod\multiprocessing.py', wdir=r'E:\kod')

Kodu derleyince böyle çalışıyor path ile ilgili değil sorun.
import multiprocessing de sorun yok. multiprocessing.Process .Process i kullanamıyorum. Buna ait parametreler (multiprocessing.Process(target= X)) gelmiyor.

Muhtemelen sisteminizde hala multiprocessing ismini kullanan bir dosya var diye düşünüyorum hala. multiprocessing.py veya multiprocessing.pyc.

Maalesef. Çok kez kontrol ettim sildiğime eminim.

( Spyder maintainer here ) Multiprocessing doesn’t work well on Windows in Spyder’s IPython console. However, you can run your code in an external terminal to have the results you want.

(bundan sonra windowsun w sini kullanmıyorum)