- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - phát hiện rò rỉ bộ nhớ Ruby/Ruby on Rails
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在 Ubuntu 上使用 thời gian.đồng hồ
Và time.time
为一段 python 代码计时:
clock elapsed time: 8.770 s
time elapsed time: 1.869 s
我知道 time.time 使用系统时间,而 time.clock 使用处理器时钟。当 time.time 给出比 time.clock 更大的耗时时,这对我来说很有意义:处理器在整个时间都没有处于事件状态(例如,调用 time.sleep
的时间)。
但是为什么/什么时候处理器时钟会给出一个比系统时间长的耗时?
phụ lục
我使用标准映射、进程池映射和线程池映射对相同的函数进行了粗略的测试。可以理解,进程池更快,线程池更慢。更有趣的是:时钟计时ít hơn处理器池中的时间计时,但大于线程池中的时间计时。
再次,我理解为什么处理器池的时钟计时较少:大概主进程不会做太多事情,只是等待池进程完成。但是为什么时钟计时更多的是用线程池呢?有什么见解吗?
kết quả:
bản đồ
time 1738.8
clock 1739.6
mp pool
time 580.1
clock 15.9
thread pool
time 3455.3
clock 5378.9
Mã số:
from time import clock, sleep, time
from multiprocessing.pool import ThreadPool
from multiprocessing import Pool
nhập khẩu ngẫu nhiên
def f(i):
x = [random.random() for j in range(100000)]
return x[i]
def t(fn):
t0, c0 = time(), clock()
for i in range(10): fn(f,range(16))
print ' time ', round(1000*(time()-t0),1)
print ' clock', round(1000*(clock()-c0),1)
nếu __name__ == '__main__':
print 'map'
t(map)
pool = Pool(8)
print 'mp pool'
t(pool.map)
pool = ThreadPool(8)
print 'thread pool'
t(pool.map)
câu trả lời hay nhất
如果您在多个 CPU 上执行,CPU 时间可能会超过 wall time。我没有在 Python 中具体看到这一点,但我在将 cái đồng hồ
函数与来自 C 的多个线程一起使用时肯定看到过这一点,并且大概 Python 代码只是直接调用这个 C 函数。
关于“为什么”:你想错了。重要的是有多少 内核在运行您的程序。如果一个内核在两秒的墙时间内运行一秒,这对您来说是有意义的,但如果四个内核在同一时间间隔内每个运行一秒会怎样。然后你在 2 秒的墙上时间中有 4 秒的 CPU 时间。内核计算所有内核的 CPU 时间。如果多个内核在同一秒内运行,那么您在那一秒内花费了多个 CPU 秒数。这是对调度程序很重要的成本度量,并且大概是构建 cái đồng hồ
的度量标准。这可能不是您关心的指标,但这就是它的工作原理。
关于python - 为什么 time.clock 给出的耗时比 time.time 长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27863717/
Tôi đang làm việc với một tập hợp 173k điểm được dán nhãn là 160 nhóm. Tôi muốn giảm số lượng nhóm/cụm bằng cách hợp nhất những nhóm gần nhất (xuống còn 9 hoặc 10 nhóm). Tôi đã tìm kiếm sklearn hoặc các thư viện tương tự nhưng không thành công. Tôi đoán nó chỉ phân cụm qua knn
Tôi có một danh sách phẳng gồm các số được nhóm hợp lý thành nhóm 3, trong đó mỗi bộ ba là (số, __bỏ qua, cờ [0 hoặc 1]), ví dụ: [7,56,1, 8,0, 0, 2 ,0,0, 6,1,
Tôi đang sử dụng pipenv để quản lý các gói của mình. Tôi muốn viết một tập lệnh python để gọi một tập lệnh python khác bằng môi trường ảo khác (VE). Cách chạy python script 1 bằng VE1 và gọi p khác
Giả sử tôi có tệp script.py nằm ở path = "foo/bar/script.py". Tôi đang tìm cách truyền hàm exec_script() bằng Python từ Python chính của tôi
Điều này nghe có vẻ như một câu đố hay một trò đùa, nhưng thực sự tôi vẫn chưa tìm ra câu trả lời cho câu hỏi này. Vấn đề chính xác là gì? Tôi muốn chạy 2 tập lệnh. Trong tập lệnh đầu tiên, tôi gọi một tập lệnh khác, nhưng tôi muốn chúng tiếp tục song song chứ không phải theo hai luồng riêng biệt. Chủ yếu là vì tôi không muốn
Tôi có một phần mềm với python 2.5.5. Tôi muốn gửi lệnh sẽ khởi động tập lệnh trong python 2.7.5 và sau đó tiếp tục thực thi tập lệnh. Tôi đã thử sử dụng #!python2.7.5 và http://re
Tôi đang sử dụng dòng lệnh python (sử dụng python 2.7) và đang cố chạy tập lệnh Python. Hệ điều hành của tôi là Windows 7. Tôi đã đặt thư mục của mình vào thư mục chứa tất cả các tập lệnh của mình bằng cách sử dụng: os.chdir("
Tiết lộ nội dung: Đã giải quyết được một phần (xem phần cuối). Đây là một ví dụ về mã sử dụng tính năng nhúng Python: #include int main(int argc, char** argv) { Py_SetPythonHome
Giả sử tôi có danh sách sau, tương ứng với giá cổ phiếu tại các thời điểm: giá = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4 , 11] Tôi muốn xác định điều nào sau đây nói chung là phù hợp nhất
Vì vậy, tôi đang cố gắng thay đổi nền của khung này khi một nút radio nhất định được chọn. Khung của tôi thuộc một lớp và chức năng của các nút radio nằm ngoài lớp đó. (Bằng cách này tôi có thể gọi chúng trên tất cả các khung khác.) Vấn đề là bất cứ khi nào tôi chọn nút radio, tôi đều gặp lỗi sau: co
Tôi đang cố gắng so sánh một chuỗi với một biểu thức chính quy trong python như sau, #!/usr/bin/env python3 import re str1 = "Expecting property name
Hãy xem xét mô-đun Boost.Python nguyên mẫu sau đây, mô-đun này nhập lớp "D" từ tệp tiêu đề C++ riêng biệt. /* tập tin: a/b.cpp */ BOOST_PYTHON_MODULE(c)
Làm cách nào để viết chương trình để "xác định số dòng của lệnh gọi hàm?" Mô-đun kiểm tra python cung cấp tùy chọn để xác định số dòng, tuy nhiên, def di(): return Inspection.currentframe().f_back.f_l
Tôi đã cài đặt Python 2.7 bằng macports và do biến $PATH của tôi, đây là những gì tôi nhận được khi nhập $python. Tuy nhiên, virtualenv sử dụng Python 2.6 theo mặc định, ngoại trừ
Tôi chỉ muốn hỏi làm thế nào để tăng tốc độ nghiên cứu trên python. Tôi có một dòng chuỗi dài có độ dài 176861 (tức là các ký tự chữ và số có một số ký hiệu) và tôi đã kiểm tra dòng này bằng hàm này để nghiên cứu: def getExe
list1= [u'%app%%General%%%Council%', u'%people%', u'%people%%Regional%%%Council%%Mandate%', u'%ppp%%Ge
Câu hỏi này đã có câu trả lời ở đây: Pythonic có sử dụng khả năng hiểu danh sách chỉ cho các tác dụng phụ không? (7 câu trả lời) Đã đóng 4 tháng trước. kể
Tôi muốn kết hợp hai danh sách thành một danh sách bằng Python như sau: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright ", "Tháng Sáu","và" ,"Ju
Tôi đang chạy Mac OS X 10.8.4 (Darwin 12.4.0) với bản phát hành Boost mới nhất (1.55.0). Tôi đang làm theo hướng dẫn ở đây để xây dựng hướng dẫn Boost-Pyth đi kèm với bản phân phối của tôi
Đang học Python, tôi đang cố gắng tạo một công cụ quét web mà không cần bất kỳ thư viện của bên thứ 3 nào để quy trình này không được sắp xếp hợp lý đối với tôi và tôi biết mình đang làm gì. Tôi đã xem một số tài nguyên trực tuyến nhưng tất cả chúng đều khiến tôi bối rối về điều gì đó. ngoại hình html
Tôi là một lập trình viên xuất sắc, rất giỏi!