Tôi có một tập lệnh gọi là jobrunner.py gọi các phương thức lớp trong main.py. Xem dưới đây ...Sự khác biệt đa xử lý Python giữa Windows và Linux
# jobrunner.py
from multiprocessing import Process
import main
from main import BBOX
def _a(arg):
f = main.a()
print f.run()
def _b(arg):
p = main.b()
print p.run()
if __name__ == '__main__':
world = '-180,180,-90,90'
BBOX.append(world.split(','))
p1 = Process(target=_a, args=("1",))
p2 = Process(target=_b, args=("1",))
p1.start()
p2.start()
p1.join()
p2.join()
Processes _a và _b được gọi mà không cần bất kỳ vấn đề trên OSX và Ubuntu nhưng khi tôi cố gắng chạy điều tương tự trên Windows (tương tự phiên bản của python và tất cả), nó vẫn thất bại nói chỉ số nằm ngoài phạm vi. Điều này khiến tôi tin rằng BBOX "toàn cầu" không được thiết lập hoặc chuyển giữa các mô-đun trên nền tảng Windows. Có ai khác nhìn thấy một cái gì đó như thế này và biết làm thế nào để sửa chữa nó?
Adam
UPDATE: I figured it out mặc dù nó có thể là một tổng Hack ... Xem dưới đây!
# jobrunner.py
from multiprocessing import Process
import main
from main import BBOX
def _a(arg):
BBOX.append(arg) #This is the key
f = main.a()
print f.run()
def _b(arg):
BBOX.append(arg) #This is the key
p = main.b()
print p.run()
if __name__ == '__main__':
world = '-180,180,-90,90'
BBOX.append(world.split(','))
p1 = Process(target=_a, args=(BBOX[0],))
p2 = Process(target=_b, args=(BBOX[0],))
p1.start()
p2.start()
p1.join()
p2.join()
Cảm ơn điều đó thực sự giúp tôi đi đúng hướng, tuy nhiên, tôi cần phải chuyển danh sách vào bộ nhớ dùng chung. Trong trường hợp này, nó sẽ giống như danh sách này: [['57', '78', '23', '40']] mà tôi đang thiết lập là BBOX. Không có c_type cho một danh sách là có? – aeupinhere