Bạn sẽ phải làm những tách bằng tay:
import threading
def ThFun(start, stop):
for item in range(start, stop):
print item
for n in range(0, 1000, 100):
stop = n + 100 if n + 100 <= 1000 else 1000
threading.Thread(target = ThFun, args = (n, stop)).start()
Mã này sử dụng đa luồng , có nghĩa là tất cả mọi thứ sẽ được chạy trong một quá trình Python duy nhất (tức là chỉ có một thông dịch Python sẽ được ra mắt) .
Đa, thảo luận trong câu trả lời khác, có nghĩa là chạy một số mã trong một số thông dịch Python (trong một số quá trình, không đề). Điều này có thể sử dụng tất cả các lõi CPU có sẵn, vì vậy điều này rất hữu ích khi bạn tập trung vào tốc độ mã của bạn (in một tấn số cho đến khi thiết bị đầu cuối ghét bạn!), không chỉ đơn giản là xử lý song song.
1. multiprocessing.dummy
hóa ra là a wrapper around the threading
module. multiprocessing
và multiprocessing.dummy
có cùng giao diện nhưng mô-đun đầu tiên xử lý song song bằng cách sử dụng các quy trình , trong khi mô-đun thứ hai - sử dụng chủ đề.
Cảm ơn! Điều gì sẽ xảy ra nếu tôi cần truyền các đối số khác cho hàm 'do_print'? – Anthony
phụ thuộc - với multiprocessing.dummy không có vấn đề gì nhưng nếu bạn muốn chắc chắn bạn nên đặt các arg trong lặp lại - ví dụ với [zip] (https://docs.python.org/2.7/library/functions .html # zip) hoặc [list comprehensions] (https://docs.python.org/2.7/tutorial/datastructures.html#list-comprehensions) – janbrohl
Vì một số lý do, mã này tạo ra khoảng 60 (!) chủ đề để lặp qua 'range (0, 1000)' cho tôi (Python 3.5) ... – ForceBru