Tôi có những trường hợp rất đơn giản, nơi công việc được thực hiện có thể được chia nhỏ và phân phối giữa các công nhân. Tôi đã thử một ví dụ rất đơn giản đa từ here:Sản lượng tương tự trong các công nhân khác nhau trong đa xử lý
import multiprocessing
import numpy as np
import time
def do_calculation(data):
rand=np.random.randint(10)
print data, rand
time.sleep(rand)
return data * 2
if __name__ == '__main__':
pool_size = multiprocessing.cpu_count() * 2
pool = multiprocessing.Pool(processes=pool_size)
inputs = list(range(10))
print 'Input :', inputs
pool_outputs = pool.map(do_calculation, inputs)
print 'Pool :', pool_outputs
Chương trình trên sẽ cho kết quả như sau:
Input : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0 7
1 7
2 7
5 7
3 7
4 7
6 7
7 7
8 6
9 6
Pool : [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Tại sao các số ngẫu nhiên cùng bị in? (Tôi có 4 cpus trong máy của tôi). Đây có phải là cách tốt nhất/đơn giản nhất để tiếp tục không?
thể trùng lặp của [Sử dụng đa python với hạt giống ngẫu nhiên khác nhau cho mỗi process] (http://stackoverflow.com/questions/9209078/using-python-multiprocessing-with-different- ngẫu nhiên-seed-cho-mỗi-quá trình) –
Không có cách nào để thiết lập số ngẫu nhiên cho mỗi quá trình có thể sử dụng số ngẫu nhiên? Giả sử một người sử dụng mô-đun ngẫu nhiên, numpy, scipy, tensorflow và ai biết những gì khác. Là cách duy nhất để đảm bảo quá trình có một hạt giống ngẫu nhiên khác nhau để đi qua từng cái này và tự thiết lập trạng thái? –