请注意这个简单的代码:
import random
while True:
L = list( str(random.random()))
Run Code Online (Sandbox Code Playgroud)
问题:如果我让它运行,python 会耗尽内存吗?
我问的原因:
此循环的第一次迭代,创建了一个列表,并分配了 'L' 来表示该列表。此循环的下一次迭代,创建另一个列表,从前一个列表中拉出“L”并分配给新列表。之前的列表已经失去了它的参考。之前的列表会被垃圾收集吗?如果不是在每次迭代结束时,但最终我希望?
话虽如此,只需将场景进一步扩展到多处理:
import random
while True:
l1 = list( str(random.random()))
pseudo: multiprocessing.Queue.put(l1)
# how is l1 handled here?
# is l1 .copy()-ed to the queue or referenced by the queue?
# is l1 destoryed in this process (this while loop) at the end of iteration?
Run Code Online (Sandbox Code Playgroud) 我有一个数据框df
,其中包含随时间变化的值(过程数据)。我有一个数据框ef
,其中包含具有开始时间和结束时间的事件(警报)。我想以一种美观的方式将它们组合在一个情节中。
"""
df==
+---------------------+------------+------------+------------+
| | processA | processB | processC |
|---------------------+------------+------------+------------|
| 2020-01-01 00:00:00 | 101.764 | 20.0079 | 0.978738 |
| 2020-01-01 00:01:00 | 102.241 | 93.3779 | -0.977278 |
| 2020-01-01 00:02:00 | 100.95 | -7.56786 | -0.103219 |
| 2020-01-01 00:03:00 | 100.411 | 7.20218 | 1.45427 |
| 2020-01-01 00:04:00 | 100.761 | 6.08375 | 0.443863 |
+---------------------+------------+------------+------------+
ef==
+----+-----------------------------------------+---------------------+---------------------+----------+
| | alm | Start | Finish | almid | …
Run Code Online (Sandbox Code Playgroud) 我想要的一切都非常简单,我只希望定位器的滴答声在指定的时间戳记开始:
peudo code: locator.set_start_ticking_at( datetime_dummy )
到目前为止,我还没有找到任何东西的运气。
这是此问题的代码部分:
axes[0].set_xlim(datetime_dummy) # datetime_dummy = '2015-12-25 05:34:00'
import matplotlib.dates as matdates
seclocator = matdates.SecondLocator(interval=20)
minlocator = matdates.MinuteLocator(interval=1)
hourlocator = matdates.HourLocator(interval=12)
seclocator.MAXTICKS = 40000
minlocator.MAXTICKS = 40000
hourlocator.MAXTICKS = 40000
majorFmt = matdates.DateFormatter('%Y-%m-%d, %H:%M:%S')
minorFmt = matdates.DateFormatter('%H:%M:%S')
axes[0].xaxis.set_major_locator(minlocator)
axes[0].xaxis.set_major_formatter(majorFmt)
plt.setp(axes[0].xaxis.get_majorticklabels(), rotation=90 )
axes[0].xaxis.set_minor_locator(seclocator)
axes[0].xaxis.set_minor_formatter(minorFmt)
plt.setp(axes[0].xaxis.get_minorticklabels(), rotation=90 )
# other codes
# save fig as a picture
Run Code Online (Sandbox Code Playgroud)
上面代码的x轴刻度会告诉我:
如何告诉次要定位器与主要定位器对齐?
如何告诉定位器从哪个时间戳开始计时?
我曾尝试:
set_xlim
不会做的伎俩
seclocator.tick_values(datetime_dummy, datetime_dummy1)
不会做任何事情
我在Windows 10上安装
了带有Python版本3.6.5的 Anaconda 5.2
,在撰写本文时,最新的Anaconda版本是5.3,它使用的是Python 3.7.0。最新的python版本是3.7.1。
我在cmd中使用了以下命令两次,以更新到最新的Anaconda:
conda update conda
conda update anaconda
Run Code Online (Sandbox Code Playgroud)
上面的最终结果是,Anaconda现在是5.3版,但是python更新到了最新的3.6,但没有更新到3.7。
list anaconda
# packages in environment at C:\Anaconda3:
#
# Name Version Build Channel
anaconda 5.3.0 py36_0
anaconda-client 1.7.2 py36_0
anaconda-navigator 1.7.0 py36_0
anaconda-project 0.8.2 py36_0
python --version
Python 3.6.6 :: Anaconda, Inc.
Run Code Online (Sandbox Code Playgroud)
如何使用其支持的最新python版本更新到最新的Anaconda?(除了卸载和重新安装)