Tôi cần một số cách để sử dụng hàm trong pool.map() chấp nhận nhiều tham số. Theo hiểu biết của tôi, hàm mục tiêu của pool.map() chỉ có thể có một tham số có thể lặp lại như một tham số nhưng có cách nào để tôi có thể chuyển các tham số khác không? Trong trường hợp này, tôi cần chuyển một vài biến cấu hình, như Lock() của tôi và ghi thông tin vào hàm đích.Chuyển nhiều tham số đến hàm pool.map() trong Python
Tôi đã cố gắng thực hiện một số nghiên cứu và tôi nghĩ rằng tôi có thể sử dụng một phần chức năng để làm cho nó hoạt động? Tuy nhiên, tôi không hoàn toàn hiểu được những công việc này như thế nào. Mọi sự trợ giúp sẽ rất được trân trọng! Dưới đây là một ví dụ đơn giản về những gì tôi muốn làm:
def target(items, lock):
for item in items:
# Do cool stuff
if (... some condition here ...):
lock.acquire()
# Write to stdout or logfile, etc.
lock.release()
def main():
iterable = [1, 2, 3, 4, 5]
pool = multiprocessing.Pool()
pool.map(target(PASS PARAMS HERE), iterable)
pool.close()
pool.join()
thảo luận ở đây: http://stackoverflow.com/question/5442910/python-multiprocessing-pool-map-for-multiple-arguments (Tôi đã sử dụng phương pháp "sao" của JF Sebastien thành công) – Roberto
Xin vui lòng, bất cứ khi nào bạn sử dụng đa xử lý sử dụng mệnh đề try/finally, với close() và join() bên trong cuối cùng để đảm bảo các quá trình được đóng lại nếu một lỗi xảy ra. http://stackoverflow.com/questions/30506489/python-multiprocessing-leading-to-many-zombie-processes – zeehio