我想在Jupyter笔记本中执行一个长期运行的Python脚本,这样我就可以破解中期生成的数据结构.
该脚本具有许多依赖项和命令行参数,并使用特定的virtualenv执行.是否可以从指定的virtualenv(与Jupyter安装的不同)交互式地在笔记本中运行Python脚本?
谢谢!
我正在尝试集成一个tqdm
进度条来监视aiohttp
在Python 3.5中生成的POST请求.我有一个工作进度条,但似乎无法使用收集结果as_completed()
.指针感激不尽.
我发现的示例建议使用以下模式,该模式与Python 3.5 async def
定义不兼容:
for f in tqdm.tqdm(asyncio.as_completed(tasks), total=len(coros)):
yield from f
Run Code Online (Sandbox Code Playgroud)
在没有进度条的情况下工作(虽然部分编辑)异步代码:
def async_classify(records):
async def fetch(session, name, sequence):
url = 'https://app.example.com/api/v0/search'
payload = {'sequence': str(sequence)}
async with session.post(url, data=payload) as response:
return name, await response.json()
async def loop():
auth = aiohttp.BasicAuth(api_key)
conn = aiohttp.TCPConnector(limit=100)
with aiohttp.ClientSession(auth=auth, connector=conn) as session:
tasks = [fetch(session, record.id, record.seq) for record in records]
responses = await asyncio.gather(*tasks)
return OrderedDict(responses)
Run Code Online (Sandbox Code Playgroud)
这是我修改的失败尝试loop()
:
async def …
Run Code Online (Sandbox Code Playgroud) 这肯定是一项微不足道的任务awk
或其他方面,但它让我今天早上挠头.我有一个格式与此类似的文件:
pep> AEYTCVAETK 2 genes ADUm.1024,ADUm.5198,ADUm.750
pep> AIQLTGK 1 genes ADUm.1999,ADUm.3560
pep> AIQLTGK 8 genes ADUm.1999,ADUm.3560
pep> KHEPPTEVDIEGR 5 genes ADUm.367
pep> VSSILEDKTT 9 genes ADUm.1192,ADUm.2731
pep> AIQLTGK 10 genes ADUm.1999,ADUm.3560
pep> VSSILEDKILSR 3 genes ADUm.2146,ADUm.5750
pep> VSSILEDKILSR 2 genes ADUm.2146,ADUm.5750
Run Code Online (Sandbox Code Playgroud)
我想在第2列中为每个不同的肽值打印一行,这意味着上面的输入将成为:
pep> AEYTCVAETK 2 genes ADUm.1024,ADUm.5198,ADUm.750
pep> AIQLTGK 1 genes ADUm.1999,ADUm.3560
pep> KHEPPTEVDIEGR 5 genes ADUm.367
pep> VSSILEDKTT 9 genes ADUm.1192,ADUm.2731
pep> VSSILEDKILSR 3 genes ADUm.2146,ADUm.5750
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所尝试的,但显然我也不需要:
awk '{print $2}' file | sort | uniq
# Prints …
Run Code Online (Sandbox Code Playgroud) 直截了当的问题:我想检索连接到NetworkX图中给定节点的所有节点,以便创建子图.在下面显示的示例中,我只想提取圆圈内的所有节点,给出其中任何一个节点的名称.
我尝试了以下递归函数,但是命中了Python的递归限制,即使此网络中只有91个节点.
无论下面的代码是否有错误,我做什么的最佳方法是什么?我将在各种大小的图形上运行此代码,并且不会事先知道最大递归深度.
def fetch_connected_nodes(node, neighbors_list):
for neighbor in assembly.neighbors(node):
print(neighbor)
if len(assembly.neighbors(neighbor)) == 1:
neighbors_list.append(neighbor)
return neighbors_list
else:
neighbors_list.append(neighbor)
fetch_connected_nodes(neighbor, neighbors_list)
neighbors = []
starting_node = 'NODE_1_length_6578_cov_450.665_ID_16281'
connected_nodes = fetch_connected_nodes(starting_node, neighbors)
Run Code Online (Sandbox Code Playgroud) 很简单,我只想将来自aiohttp
异步 HTTP 请求的响应与标识符(例如字典键)相关联,以便我知道哪个响应对应于哪个请求。
例如,下面的URI调用功能后缀的字典值1
,2
和3
。如何修改它以返回与每个结果关联的键?我只需要能够跟踪哪个请求是哪个......对于熟悉的人来说无疑是微不足道的asyncio
import asyncio
import aiohttp
items = {'a': '1', 'b': '2', 'c': '3'}
def async_requests(items):
async def fetch(item):
url = 'http://jsonplaceholder.typicode.com/posts/'
async with aiohttp.ClientSession() as session:
async with session.get(url + item) as response:
return await response.json()
async def run(loop):
tasks = []
for k, v in items.items():
task = asyncio.ensure_future(fetch(v))
tasks.append(task)
responses = await asyncio.gather(*tasks)
print(responses)
loop = asyncio.get_event_loop()
future = asyncio.ensure_future(run(loop))
loop.run_until_complete(future)
async_requests(items)
Run Code Online (Sandbox Code Playgroud)
输出(缩写):
[{'id': 2, ...}, …
Run Code Online (Sandbox Code Playgroud) 我想知道一种优雅的Pythonic方法在Python 3 中并行迭代列表(或列表的列表).直到运行时才知道列表的数量,所以我相信我不能简单地将它们作为参数提供到zip()
功能.
例如,给定以下数据结构:
var = [['x1' ,'x2' ,'x3'], ['y1', 'y2', 'y3'], ['z1', 'z2', 'z3'], …]
我希望能够在每次迭代时访问以下值:
x1,y1,z1
其次是x2,y2,z2
其次x3,y3,z3
等等.
据推测,我可以直接使用列表索引,或使用itertools.chain来实现这一点,但我正在寻找使用生成器或其他方式的更优雅的方法.
python ×3
python-3.x ×3
aiohttp ×2
awk ×1
bash ×1
for-loop ×1
graph ×1
jupyter ×1
networkx ×1
progress-bar ×1
python-3.5 ×1
shell ×1
tqdm ×1
uniq ×1
virtualenv ×1